/**
 * MailCliente representa la parte del sistema que interactua
 * con el usuario. Es responsable de toda interaccion con el ususario.
 */
package client;

import java.util.LinkedList;
import server.MailServer;
/**
 *
 * @author foUMaster
 * @version 1.0.0
 */
public class MailClient {
    private String usuario;
    private LinkedList<Message> mensajesRecibidos;
    //para leer los mensajes
    private MailServer mailServer;
    
    
/**
 * Constructor de la clase
 */    
    public MailClient(String usuario, MailServer mailServer) {
        this.usuario = usuario;
        this.mensajesRecibidos = new LinkedList<>();
        this.mailServer = mailServer;      
        this.mailServer.addMailClient(this);
    }
    
/**
* @return the usuario 
*/
    public String getUsuario() {
        return usuario;
    }

/**
* @param usuario the usuario to set 
*/
    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

/**
 * Método que consulta al servidor a fin de ver si el usuario tiene algun
 * mensaje.
 * @return int Un entero que es el resultado de la cantidad de mensajes que 
 * tiene el usuario.
 */
    public int chekMessages() {
        return this.mailServer.getMessagesWaiting(usuario);
    }
 
 /**
  * Método que obtiene el siguiente mensaje del servidor y lo almacena en sus mensajes recibidos.
  * @return Message Un objeto message con el mensaje del usuario.
 */
    public Message readMessage() {   
        Message recibido = mailServer.getNextMessage(usuario);
        mensajesRecibidos.add(recibido);
        return recibido;
    }

/**
 * Método que obtiene toda la informacion necesaria del usuario, crea un
 * de tipo message y lo envía al servidor.
*/
    public void sendMessage(String sender, String destinatario, String asunto, String mensaje) {        
        Message msj = new Message(sender, destinatario, asunto, mensaje);        
        mailServer.post(msj);
    }
    
    
}
